package com.yy.micro.magic.core.filter;

import com.yy.micro.magic.core.model.ResultCollector;
import com.yy.micro.magic.core.model.RuntimeMetadata;
 /**
   * @author YY
   * @version 1.0.0
   * @update 2021/9/22 9:18 下午
   * @description: 数据变换中过滤器，筛选数据。
 */
public interface MagicFilter {

    /**
     * @param metadata
     *            策略源数据，包括当前的key和原始的请求数据源，详细见{@link RuntimeMetadata}
     * @param collector
     *            结果收集器，{@link ResultCollector}
     * @param filterChain
     *            过滤器链，用于调度过滤器执行。在每个Filter的执行中，在适当的位置指定下一个过滤器执行 {@link FilterChain#doFilter}，否则执行会终止
     */
    void doFilter(RuntimeMetadata metadata, ResultCollector collector, FilterChain filterChain);
}
